home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / libs / intuisup.lha / Intuisup / source.lha / Texts / texts_test.c < prev    next >
C/C++ Source or Header  |  1992-07-28  |  10KB  |  294 lines

  1. /* $Revision Header *** Header built automatically - do not edit! ***********
  2.  *
  3.  *    (C) Copyright 1991 by Torsten Jürgeleit
  4.  *
  5.  *    Name .....: texts_test.c
  6.  *    Created ..: Thursday 19-Dec-91 16:47:04
  7.  *    Revision .: 1
  8.  *
  9.  *    Date        Author                 Comment
  10.  *    =========   ====================   ====================
  11.  *    11-Jul-92   Torsten Jürgeleit      now get pointer to console device
  12.  *    19-Dec-91   Torsten Jürgeleit      Created this file!
  13.  *
  14.  ****************************************************************************
  15.  *
  16.  *    Test for text output and converting functions
  17.  *
  18.  * $Revision Header ********************************************************/
  19.  
  20.     /* Includes */
  21.  
  22. #include <exec/types.h>
  23. #include <graphics/gfxbase.h>
  24. #include <graphics/text.h>
  25. #include <intuition/intuitionbase.h>
  26. #include <intuition/intuition.h>
  27. #ifdef AZTEC_C
  28. #include <functions.h>   /* needed for Aztec C - prototypes and pragmas for all Amiga system functions */
  29. #endif
  30. #include <libraries/memwatch.h>   /* header file for memory debug link library (Fish 240) - AFTER functions.h */
  31. #include <string.h>
  32. #include "/render/render.h"
  33. #include "texts.h"
  34.  
  35.     /* Defines */
  36.  
  37. #define WINDOW_WIDTH        600
  38. #define WINDOW_HEIGHT        180
  39. #define WINDOW_IDCMP        CLOSEWINDOW
  40. #define WINDOW_FLAGS        (WINDOWCLOSE | WINDOWDRAG | WINDOWDEPTH | SMART_REFRESH | NOCAREREFRESH | RMBTRAP | ACTIVATE)
  41. #define WINDOW_TITLE        (UBYTE *)" Texts test "
  42.  
  43. #define RENDER_INFO_FLAGS    (USHORT)(RENDER_INFO_FLAG_INNER_WINDOW | RENDER_INFO_FLAG_BACK_FILL)
  44. #define OPEN_WINDOW_FLAGS    (USHORT)(OPEN_WINDOW_FLAG_CENTER_SCREEN | OPEN_WINDOW_FLAG_RENDER_PENS)
  45.  
  46.     /* Globals */
  47.  
  48. struct IntuitionBase  *IntuitionBase;
  49. struct GfxBase        *GfxBase;
  50. struct Library        *DiskfontBase;
  51. struct Library        *LayersBase;
  52. struct Device         *ConsoleDevice;
  53.  
  54.     /* Statics */
  55.  
  56. STATIC struct NewWindow  test_new_window = {
  57.    0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 0, WINDOW_IDCMP, WINDOW_FLAGS,
  58.    NULL, NULL, WINDOW_TITLE, NULL, NULL, 0, 0, 0, 0, WBENCHSCREEN
  59. };
  60. STATIC struct TextAttr  topaz60_attr = { (STRPTR)"topaz.font", TOPAZ_SIXTY,
  61.                            FS_NORMAL, FPF_ROMFONT },
  62.             topaz80_attr = { (STRPTR)"topaz.font", TOPAZ_EIGHTY,
  63.                            FS_NORMAL, FPF_ROMFONT };
  64.     /* Defines for texts */
  65.  
  66. #define TEST_TEXT1_TYPE        TEXT_DATA_TYPE_TEXT
  67. #define TEST_TEXT1_FLAGS    (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_BOLD | TEXT_DATA_FLAG_UNDERLINED)
  68. #define TEST_TEXT1_LEFT_EDGE    0
  69. #define TEST_TEXT1_TOP_EDGE    20
  70. #define TEST_TEXT1_TEXT        "Texts test"
  71. #define TEST_TEXT1_TEXT_ATTR    &topaz60_attr
  72.  
  73. #define TEST_TEXT2_TYPE        TEXT_DATA_TYPE_TEXT
  74. #define TEST_TEXT2_FLAGS    TEXT_DATA_FLAG_CENTER
  75. #define TEST_TEXT2_LEFT_EDGE    0
  76. #define TEST_TEXT2_TOP_EDGE    (TEST_TEXT1_TOP_EDGE + 20)
  77. #define TEST_TEXT2_TEXT        "Text pen 1"
  78. #define TEST_TEXT2_TEXT_ATTR    &topaz80_attr
  79.  
  80. #define TEST_TEXT3_TYPE        TEXT_DATA_TYPE_TEXT
  81. #define TEST_TEXT3_FLAGS    (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_COLOR2)
  82. #define TEST_TEXT3_LEFT_EDGE    0
  83. #define TEST_TEXT3_TOP_EDGE    (TEST_TEXT2_TOP_EDGE + 20)
  84. #define TEST_TEXT3_TEXT        "Text pen 2"
  85. #define TEST_TEXT3_TEXT_ATTR    &topaz80_attr
  86.  
  87. #define TEST_TEXT4_TYPE        TEXT_DATA_TYPE_TEXT
  88. #define TEST_TEXT4_FLAGS    (TEXT_DATA_FLAG_PLACE_LEFT)
  89. #define TEST_TEXT4_LEFT_EDGE    (WINDOW_WIDTH / 2 - 4)
  90. #define TEST_TEXT4_TOP_EDGE    (TEST_TEXT3_TOP_EDGE + 30)
  91. #define TEST_TEXT4_TEXT        "Unsigned dec"
  92. #define TEST_TEXT4_TEXT_ATTR    &topaz80_attr
  93.  
  94. #define TEST_TEXT5_TYPE        TEXT_DATA_TYPE_NUM_UNSIGNED_DEC
  95. #define TEST_TEXT5_FLAGS    TEXT_DATA_FLAG_COLOR2
  96. #define TEST_TEXT5_LEFT_EDGE    (WINDOW_WIDTH / 2 + 4)
  97. #define TEST_TEXT5_TOP_EDGE    TEST_TEXT4_TOP_EDGE
  98. #define TEST_TEXT5_TEXT        (BYTE *)0x0f0f0f0f
  99. #define TEST_TEXT5_TEXT_ATTR    &topaz80_attr
  100.  
  101. #define TEST_TEXT6_TYPE        TEXT_DATA_TYPE_TEXT
  102. #define TEST_TEXT6_FLAGS    (TEXT_DATA_FLAG_PLACE_LEFT | TEXT_DATA_FLAG_ITALIC)
  103. #define TEST_TEXT6_LEFT_EDGE    (WINDOW_WIDTH / 2 - 4)
  104. #define TEST_TEXT6_TOP_EDGE    (TEST_TEXT5_TOP_EDGE + 20)
  105. #define TEST_TEXT6_TEXT        "Signed dec"
  106. #define TEST_TEXT6_TEXT_ATTR    &topaz80_attr
  107.  
  108. #define TEST_TEXT7_TYPE        TEXT_DATA_TYPE_NUM_SIGNED_DEC
  109. #define TEST_TEXT7_FLAGS    (TEXT_DATA_FLAG_COLOR2 | TEXT_DATA_FLAG_NUM_LEADING_ZEROES)
  110. #define TEST_TEXT7_LEFT_EDGE    (WINDOW_WIDTH / 2 + 4)
  111. #define TEST_TEXT7_TOP_EDGE    TEST_TEXT6_TOP_EDGE
  112. #define TEST_TEXT7_TEXT        (BYTE *)0x0f0f0f0f
  113. #define TEST_TEXT7_TEXT_ATTR    &topaz80_attr
  114.  
  115. #define TEST_TEXT8_TYPE        TEXT_DATA_TYPE_TEXT
  116. #define TEST_TEXT8_FLAGS    (TEXT_DATA_FLAG_PLACE_LEFT | TEXT_DATA_FLAG_ITALIC)
  117. #define TEST_TEXT8_LEFT_EDGE    (WINDOW_WIDTH / 2 - 4)
  118. #define TEST_TEXT8_TOP_EDGE    (TEST_TEXT7_TOP_EDGE + 20)
  119. #define TEST_TEXT8_TEXT        "Hex"
  120. #define TEST_TEXT8_TEXT_ATTR    &topaz80_attr
  121.  
  122. #define TEST_TEXT9_TYPE        TEXT_DATA_TYPE_NUM_HEX
  123. #define TEST_TEXT9_FLAGS    (TEXT_DATA_FLAG_COLOR2 | TEXT_DATA_FLAG_NUM_IDENTIFIER | TEXT_DATA_FLAG_NUM_C_STYLE | TEXT_DATA_FLAG_NUM_UPPER_CASE)
  124. #define TEST_TEXT9_LEFT_EDGE    (WINDOW_WIDTH / 2 + 4)
  125. #define TEST_TEXT9_TOP_EDGE    TEST_TEXT8_TOP_EDGE
  126. #define TEST_TEXT9_TEXT        (BYTE *)0x0f0f0f0f
  127. #define TEST_TEXT9_TEXT_ATTR    &topaz80_attr
  128.  
  129. #define TEST_TEXT10_TYPE    TEXT_DATA_TYPE_TEXT
  130. #define TEST_TEXT10_FLAGS    (TEXT_DATA_FLAG_PLACE_LEFT | TEXT_DATA_FLAG_ITALIC)
  131. #define TEST_TEXT10_LEFT_EDGE    (WINDOW_WIDTH / 2 - 4)
  132. #define TEST_TEXT10_TOP_EDGE    (TEST_TEXT9_TOP_EDGE + 20)
  133. #define TEST_TEXT10_TEXT    "Bin"
  134. #define TEST_TEXT10_TEXT_ATTR    &topaz80_attr
  135.  
  136. #define TEST_TEXT11_TYPE    TEXT_DATA_TYPE_NUM_BIN
  137. #define TEST_TEXT11_FLAGS    (TEXT_DATA_FLAG_COLOR2 | TEXT_DATA_FLAG_NUM_IDENTIFIER | TEXT_DATA_FLAG_NUM_LEADING_ZEROES)
  138. #define TEST_TEXT11_LEFT_EDGE    (WINDOW_WIDTH / 2 + 4)
  139. #define TEST_TEXT11_TOP_EDGE    TEST_TEXT10_TOP_EDGE
  140. #define TEST_TEXT11_TEXT    (BYTE *)0x0f0f0f0f
  141. #define TEST_TEXT11_TEXT_ATTR    &topaz80_attr
  142.  
  143.     /* Statics for texts */
  144.  
  145. STATIC struct TextData  test_text_data[] = {
  146.    {
  147.     TEST_TEXT1_TYPE,    /* td_Type */
  148.     TEST_TEXT1_FLAGS,    /* td_Flags */
  149.     TEST_TEXT1_LEFT_EDGE,    /* td_LeftEdge */
  150.     TEST_TEXT1_TOP_EDGE,    /* td_TopEdge */
  151.     TEST_TEXT1_TEXT,    /* *td_Text */
  152.     TEST_TEXT1_TEXT_ATTR    /* *td_TextAttr */
  153.    }, {
  154.     TEST_TEXT2_TYPE,    /* td_Type */
  155.     TEST_TEXT2_FLAGS,    /* td_Flags */
  156.     TEST_TEXT2_LEFT_EDGE,    /* td_LeftEdge */
  157.     TEST_TEXT2_TOP_EDGE,    /* td_TopEdge */
  158.     TEST_TEXT2_TEXT,    /* *td_Text */
  159.     TEST_TEXT2_TEXT_ATTR    /* *td_TextAttr */
  160.    }, {
  161.     TEST_TEXT3_TYPE,    /* td_Type */
  162.     TEST_TEXT3_FLAGS,    /* td_Flags */
  163.     TEST_TEXT3_LEFT_EDGE,    /* td_LeftEdge */
  164.     TEST_TEXT3_TOP_EDGE,    /* td_TopEdge */
  165.     TEST_TEXT3_TEXT,    /* *td_Text */
  166.     TEST_TEXT3_TEXT_ATTR    /* *td_TextAttr */
  167.    }, {
  168.     TEST_TEXT4_TYPE,    /* td_Type */
  169.     TEST_TEXT4_FLAGS,    /* td_Flags */
  170.     TEST_TEXT4_LEFT_EDGE,    /* td_LeftEdge */
  171.     TEST_TEXT4_TOP_EDGE,    /* td_TopEdge */
  172.     TEST_TEXT4_TEXT,    /* *td_Text */
  173.     TEST_TEXT4_TEXT_ATTR    /* *td_TextAttr */
  174.    }, {
  175.     TEST_TEXT5_TYPE,    /* td_Type */
  176.     TEST_TEXT5_FLAGS,    /* td_Flags */
  177.     TEST_TEXT5_LEFT_EDGE,    /* td_LeftEdge */
  178.     TEST_TEXT5_TOP_EDGE,    /* td_TopEdge */
  179.     TEST_TEXT5_TEXT,    /* *td_Text */
  180.     TEST_TEXT5_TEXT_ATTR    /* *td_TextAttr */
  181.    }, {
  182.     TEST_TEXT6_TYPE,    /* td_Type */
  183.     TEST_TEXT6_FLAGS,    /* td_Flags */
  184.     TEST_TEXT6_LEFT_EDGE,    /* td_LeftEdge */
  185.     TEST_TEXT6_TOP_EDGE,    /* td_TopEdge */
  186.     TEST_TEXT6_TEXT,    /* *td_Text */
  187.     TEST_TEXT6_TEXT_ATTR    /* *td_TextAttr */
  188.    }, {
  189.     TEST_TEXT7_TYPE,    /* td_Type */
  190.     TEST_TEXT7_FLAGS,    /* td_Flags */
  191.     TEST_TEXT7_LEFT_EDGE,    /* td_LeftEdge */
  192.     TEST_TEXT7_TOP_EDGE,    /* td_TopEdge */
  193.     TEST_TEXT7_TEXT,    /* *td_Text */
  194.     TEST_TEXT7_TEXT_ATTR    /* *td_TextAttr */
  195.    }, {
  196.     TEST_TEXT8_TYPE,    /* td_Type */
  197.     TEST_TEXT8_FLAGS,    /* td_Flags */
  198.     TEST_TEXT8_LEFT_EDGE,    /* td_LeftEdge */
  199.     TEST_TEXT8_TOP_EDGE,    /* td_TopEdge */
  200.     TEST_TEXT8_TEXT,    /* *td_Text */
  201.     TEST_TEXT8_TEXT_ATTR    /* *td_TextAttr */
  202.    }, {
  203.     TEST_TEXT9_TYPE,    /* td_Type */
  204.     TEST_TEXT9_FLAGS,    /* td_Flags */
  205.     TEST_TEXT9_LEFT_EDGE,    /* td_LeftEdge */
  206.     TEST_TEXT9_TOP_EDGE,    /* td_TopEdge */
  207.     TEST_TEXT9_TEXT,    /* *td_Text */
  208.     TEST_TEXT9_TEXT_ATTR    /* *td_TextAttr */
  209.    }, {
  210.     TEST_TEXT10_TYPE,    /* td_Type */
  211.     TEST_TEXT10_FLAGS,    /* td_Flags */
  212.     TEST_TEXT10_LEFT_EDGE,    /* td_LeftEdge */
  213.     TEST_TEXT10_TOP_EDGE,    /* td_TopEdge */
  214.     TEST_TEXT10_TEXT,    /* *td_Text */
  215.     TEST_TEXT10_TEXT_ATTR    /* *td_TextAttr */
  216.    }, {
  217.     TEST_TEXT11_TYPE,    /* td_Type */
  218.     TEST_TEXT11_FLAGS,    /* td_Flags */
  219.     TEST_TEXT11_LEFT_EDGE,    /* td_LeftEdge */
  220.     TEST_TEXT11_TOP_EDGE,    /* td_TopEdge */
  221.     TEST_TEXT11_TEXT,    /* *td_Text */
  222.     TEST_TEXT11_TEXT_ATTR    /* *td_TextAttr */
  223.    }, {
  224.     INTUISUP_DATA_END    /* mark end of text data array */
  225.    }
  226. };
  227.     /* Prototypes */
  228.  
  229. VOID test_action(struct RenderInfo  *ri, struct Window  *win);
  230.  
  231.     /* Pragmas */
  232.  
  233. #pragma regcall(test_action(a0,a1))
  234.  
  235.     /* Texts test */
  236.  
  237.    LONG
  238. main(VOID)
  239. {
  240.    struct IOStdReq    io;
  241.    struct RenderInfo  *ri;
  242.    struct Window      *win;
  243.  
  244.    MWInit((BPTR)NULL, 0L);
  245.    if (IntuitionBase = OpenLibrary("intuition.library", 0L)) {
  246.       if (GfxBase = OpenLibrary("graphics.library", 0L)) {
  247.      if (DiskfontBase = OpenLibrary("diskfont.library", 0L)) {
  248.         if (LayersBase = OpenLibrary("layers.library", 0L)) {
  249.            if (!OpenDevice("console.device", -1L,
  250.                          (struct IORequest *)&io, 0L)) {
  251.           ConsoleDevice = io.io_Device;
  252.           if (ri = get_render_info(NULL, RENDER_INFO_FLAGS)) {
  253.              if (win = open_window(ri, &test_new_window,
  254.                                OPEN_WINDOW_FLAGS)) {
  255.             test_action(ri, win);
  256.             close_window(win, FALSE);
  257.              }
  258.              free_render_info(ri);
  259.           }
  260.           CloseDevice((struct IORequest *)&io);
  261.            }
  262.            CloseLibrary(LayersBase);
  263.         }
  264.         CloseLibrary(DiskfontBase);
  265.      }
  266.      CloseLibrary(GfxBase);
  267.       }
  268.       CloseLibrary(IntuitionBase);
  269.    }
  270.    MWTerm();
  271.    return(0L);
  272. }
  273.     /* Perform IDCMP action */
  274.  
  275.    VOID
  276. test_action(struct RenderInfo  *ri, struct Window  *win)
  277. {
  278.    struct MsgPort  *up = win->UserPort;
  279.    BOOL keepon = TRUE;
  280.  
  281.    display_texts(ri, win, &test_text_data[0], 0, 0, NULL);
  282.    do {
  283.       struct IntuiMessage  *msg;
  284.  
  285.       WaitPort(up);
  286.       while (msg = (struct IntuiMessage *)GetMsg(up)) {
  287.      if (msg->Class == CLOSEWINDOW) {
  288.         keepon = FALSE;
  289.      }
  290.      ReplyMsg((struct Message *)msg);
  291.       }
  292.    } while (keepon == TRUE);
  293. }
  294.